草庐IT

c++ - g++ c++11 constexpr 评估性能

全部标签

c# - 现有元素的 HashSet 性能添加与包含

由于某些原因,当元素已存在于哈希集。证明:Stopwatchwatch=newStopwatch();intsize=10000;intiterations=10000;vars=newHashSet();for(inti=0;i{for(inti=0;i();for(inti=0;i{for(inti=0;i为什么Contains对于已经存在的元素比Add更快?注意:我正在使用来自另一个SO问题的Stopwatch扩展。publicstaticlongTime(thisStopwatchsw,Actionaction,intiterations){sw.Reset();sw.Star

c# - 什么是 C# 的良好读取、评估、打印、循环实现?

这个问题在这里已经有了答案:C#Console/CLIInterpreter?(17个答案)关闭7年前。一些编程语言实现提供了一个读取、计算、打印循环交互外壳,允许程序员计算表达式和程序片段,并以增量、交互的方式进行编程。您使用过并喜欢C#REPL的哪些实现?如果有一个也可以与VisualStudio集成的,那就太好了。我找到了,但没有尝试过,MonoC#REPL和DonBox'sC#REPL

c# - 如何在不删除旧计数器的情况下向现有性能计数器类别添加新计数器?

我有一个自定义计数器类别,我需要向其添加一个新计数器,而不删除或重置任何现有计数器。我怎样才能做到这一点?我尝试使用CounterExists(),但即使在我创建了计数器之后,我如何才能将它关联到CounterCreationDataCollection项并将它关联到我现有的计数器类别? 最佳答案 我发现最好的方法是保留现有的原始值,然后在删除并重新创建类别后重新应用它们,尤其是因为关于此主题的信息似乎不多。//////WhendeletingtheCategory,needtopreservetheexistingcounterv

c# - C# 中的 String.Join 性能问题

我一直在研究向我提出的一个问题:如何编写一个将字符串作为输入并返回字符之间有空格的字符串的函数。该函数将被编写为在每秒调用数千次时优化性能。我知道.net有一个名为String.Join的函数,我可以将空格字符作为分隔符与原始字符串一起传递给该函数。除非使用String.Join,否则我可以使用StringBuilder类在每个字符后附加空格。完成此任务的另一种方法是声明一个包含2*n-1个字符的字符数组(您必须为空格添加n-1个字符)。可以在一个循环中填充字符数组,然后传递给String构造函数。我编写了一些.net代码,这些代码使用参数"Hello,World"运行这些算法中的每一

c# - 使用资源文件 (.resx) 时的性能开销

请注意,我知道有关此主题的以下问题:Arethereanyperformanceissuesorcaveatswithresource(.resx)files?Arestringresources(.resx)propertieskeptinmemory?等。但是,我觉得这些问题的答案都不令人满意(不够具体)。我也知道MSDN有关此主题的页面,但这些页面似乎也忽略了有关使用资源文件的开销的技术信息。我的困境是我们即将着手对相当大的WinForms应用程序进行本地化。例如,在这个阶段,我关心的是从嵌套循环中访问.resx文件资源的性能。目前,对于我们已本地化的一小部分代码(DataGri

c# - LINQ Lambda 与查询语法性能

我今天在我的项目中看到了一个LINQ查询语法,它正在计算List中具有特定条件的项目,如下所示:inttemp=(fromAinpTaskswhereA.StatusID==(int)BusinessRule.TaskStatus.PendingselectA).ToList().Count();我想通过使用Count(Func)重写它来重构它以使其更具可读性。我认为这在性能方面也会很好,所以我写道:intUnassignedCount=pTasks.Count(x=>x.StatusID==(int)BusinessRule.TaskStatus.Pending);但是当我使用Sto

c# - 为什么 .NET Core 2.0 的性能比 .NET Framework 4.6.1 差

我编写了一个创建4个线程的程序,每个线程将20.000个数字从低到高排序50次。我已在.NETCore2.0和.NETFramework4.6.1上多次运行此测试。在此测试中,.NETFramework始终优于.NETCore。设置.NETCore处于Release模式并已发布Windows10,i7双核,4线程(超线程)以下代码已用于对两个框架进行基准测试。staticvoidMain(){constintamountParallel=4;varglobalStopwatch=newStopwatch();globalStopwatch.Start();vartasks=newTas

c# - .NET 交叉程序集性能下降

我正在阅读BillWagner的书EffectiveC#。在Item32中,他提倡开发人员创建更小、更内聚的程序集,这些程序集可以更容易地重用。然而,在同一项目中,他说:...ExtraSecuritychecksalsoaredoneacrossassemblyboundaries.Allcodefromthesameassemblysamehasthesameleveloftrust(notnecessarilythesameaccessrights,butthesametruthlevel).TheCLRperformssomesecuritycheckswhenevercode

c# - 评估数学表达式的最佳算法?

评估数学表达式的最佳算法是什么?我希望能够稍微优化一下,因为我可能有一个包含各种变量的公式,我可能需要使用不同的变量对其进行数百次评估。所以基本上,如果我最初可以解析公式,以便以某种方式对其进行优化,然后我可以根据需要多次将变量传递给这个优化版本,每次它都会为我生成一个结果。我将使用Delphi或C#编写此代码。我已经使用调车场算法编写了类似的东西,但每次我需要计算相同的公式时,我都必须经过解析阶段。必须有更好的方法来做到这一点。 最佳答案 如果你想用Delphi来做,你可以看看JclExprEval单元是如何工作的,它是JEDIC

C#:ToArray 性能

这个问题在这里已经有了答案:IsitbettertocallToList()orToArray()inLINQqueries?(16个答案)关闭9年前。背景:我承认我没有尝试对此进行基准测试,但我很好奇...Enumerable.ToArray的CPU/内存特性是什么?(及其表亲Enumerable.ToList)?自IEnumerable没有提前宣传它有多少元素,我(可能天真地)假设ToArray将不得不“猜测”一个初始数组大小,然后如果第一个猜测看起来太小则调整/重新分配数组,如果第二个猜测看起来太小则再次调整它的大小等等......这会给出比线性更差的性能。我可以想象涉及(混合)